package composite_pattern;

import java.util.ArrayList;
import java.util.List;

// 抽象类，代表字母组合的基本结构
public abstract class LetterComposite {

    protected List<LetterComposite> children = new ArrayList<>();

    // 添加子字母组合
    public void add(LetterComposite letter) {
        children.add(letter);
    }

    // 统计子字母组合的数量
    public int count() {
        return children.size();
    }

    //打印前缀字符
    protected void printThisBefore() {

    }

    //打印后继字符
    protected void printThisAfter() {

    }

    // 打印字母组合及其子组合
    public void print() {
        printThisBefore();
        children.forEach(LetterComposite::print);
        printThisAfter();
    }
}

// 此类用于实现字母组合的递归结构，子字母组合可以自由添加和管理。
